package cl.golive.d2menu.utils.modeloUtils;

import cl.golive.d2menu.obj.Plato;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

/**
 *
 * @author whyem
 */
public class PlatosTableModel extends DefaultTableModel implements TableModel{


    public PlatosTableModel() {
        super();
    }

    /**
     *  Agrega una nueva fila del tipo Plato al modelo.<br>
     *
     * @param plato
     */
    public void addCustomRowPlato(Plato plato) {
        Object[] rowData = new Object[6];

        rowData[0] = plato.getPlatoId();
        rowData[1] = plato.getCategoriaId();
        rowData[2] = plato.getNombrePlato();
        rowData[3] = plato.getDetallePlato();
        rowData[4] = plato.getPrecio();
        rowData[5] = plato.getNombreImagen();

        super.addRow(rowData);
    }

    /**
     * Obtiene el objeto seleccionado (Plato) en la posicion <code>rowIndex</code>.<br>
     * Primero se obtiene el objeto y luego se mapea a Plato.
     *
     * @param currentModel
     * @param rowIndex
     * @return
     */
    public Plato getItemPlatoAt(PlatosTableModel currentModel, int rowIndex) {
        Plato plato = new Plato();

        Object[] rowData = new Object[6];
        for (int i = 0; i < 6; i++) {
            rowData[i] = currentModel.getValueAt(rowIndex, i);
        }

        plato = mappingObjectToPlato(rowData);
        return plato;
    }

    /**
     *  private int platoId;
     *  private int imagenId;
     *  private int categoriaId;
     *  private String nombrePlato;
     *  private String detallePlato;
     *  private int precio;
     *  private int estadoPlatoId;
     *
     * @param rowData
     */
    private Plato mappingObjectToPlato(Object[] rowData) {
        Plato plato = new Plato();

        plato.setPlatoId(Integer.parseInt(rowData[0].toString()));
        plato.setCategoriaId(Integer.parseInt(rowData[1].toString()));
        plato.setNombrePlato(rowData[2].toString());
        plato.setDetallePlato(rowData[3].toString());
        plato.setPrecio(Integer.parseInt(rowData[4].toString()));
        plato.setNombreImagen(rowData[5].toString());

        return plato;
    }

    @Override
    public boolean isCellEditable (int row, int column)
    {
        return false;
    }  

}